home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -seriously_amiga- / shareware / programming / other / asciitable / asciitable.c < prev    next >
C/C++ Source or Header  |  1998-01-12  |  4KB  |  121 lines

  1. /* ASCIITable Version 1.00, Chez Corbin, 12 février 1997, © R.Florac */
  2. /* Version 1.01, ajout d'une séparation entre les boutons "caractères" et "gammes" */
  3. /* Compilation: sc link ASCIITable.c */
  4.  
  5. #include <libraries/bgui.h>
  6. #include <libraries/bgui_macros.h>
  7.  
  8. #include <clib/alib_protos.h>
  9.  
  10. #include <proto/exec.h>
  11. #include <proto/bgui.h>
  12. #include <proto/intuition.h>
  13.  
  14. #include <stdlib.h>
  15. #include <string.h>
  16.  
  17. #include "français.h"
  18.  
  19.  
  20. struct Library *BGUIBase;
  21. Object * objet_principal;
  22.  
  23. vide __regargs init_textes_gadgets (char lettre, char * lettres)
  24. {   long i = 0, j;
  25.     pour (j = 0;  j < 32;  j++)
  26.     {    lettres[i++] = lettre++;    lettres[i++]=0; }
  27. }
  28.  
  29. Object * __regargs groupe_horizontal (char * lettres, long ligne)
  30. {   renvoi HGroupObject, Spacing (4),
  31.     StartMember, XenButton (&lettres[0],  ligne + 0), FixMinHeight, EndMember,
  32.     StartMember, XenButton (&lettres[2],  ligne + 1), FixMinHeight, EndMember,
  33.     StartMember, XenButton (&lettres[4],  ligne + 2), FixMinHeight, EndMember,
  34.     StartMember, XenButton (&lettres[6],  ligne + 3), FixMinHeight, EndMember,
  35.     StartMember, XenButton (&lettres[8],  ligne + 4), FixMinHeight, EndMember,
  36.     StartMember, XenButton (&lettres[10], ligne + 5), FixMinHeight, EndMember,
  37.     StartMember, XenButton (&lettres[12], ligne + 6), FixMinHeight, EndMember,
  38.     StartMember, XenButton (&lettres[14], ligne + 7), FixMinHeight, EndMember,
  39.     EndObject;
  40. }
  41.  
  42. struct Window * __regargs ouverture_fenêtre (ULONG *signal, char * ligne, long groupe)
  43. {
  44.     struct Window *fenêtre = NULL;
  45.  
  46.     groupe *= 32;
  47.     objet_principal = WindowObject,
  48.     WINDOW_Title,        "ASCIITable 1.01 (©) R.Florac",
  49.     WINDOW_SmartRefresh,    VRAI,
  50.     WINDOW_RMBTrap,     VRAI,
  51.     WINDOW_SizeGadget,    FAUX,
  52.     WINDOW_CloseOnEsc,    VRAI,
  53.     WINDOW_Position,    POS_CENTERMOUSE,
  54.     WINDOW_AutoAspect,    VRAI,
  55.     WINDOW_HelpText,    ISEQ_C"Les boutons du haut vous\ndonnent les codes des\ncaractères correspondants\ndans la barre de titre\n\nCeux situés en bas\ndonnent accès aux diverses\ngammes de caractères",
  56.     WINDOW_MasterGroup,
  57.         VGroupObject, HOffset(4), VOffset(4), Spacing(4), GROUP_BackFill, SHINE_RASTER,
  58.         StartMember, groupe_horizontal (ligne, 0), EndMember,
  59.         StartMember, groupe_horizontal (ligne+16, 8), EndMember,
  60.         StartMember, groupe_horizontal (ligne+32, 16), EndMember,
  61.         StartMember, groupe_horizontal (ligne+48, 24), EndMember,
  62.         StartMember, TitleSeperator ("Sélection caractères"),
  63.         EndMember,
  64.         StartMember,
  65.             HGroupObject, EqualWidth, Spacing(4),
  66.             StartMember, XenButton (" .? ", 100), FixMinHeight, EndMember,
  67.             StartMember, XenButton ("\x40M\x5F", 101), FixMinHeight, EndMember,
  68.             StartMember, XenButton ("\x60m\x7F", 102), FixMinHeight, EndMember,
  69.             StartMember, XenButton ("\xA0.\xBF", 104), FixMinHeight, EndMember,
  70.             StartMember, XenButton ("\xC0.\xDF", 105), FixMinHeight, EndMember,
  71.             StartMember, XenButton ("\xE0.\xFF", 106), FixMinHeight, EndMember,
  72.             EndObject,
  73.         EndObject,
  74.     EndObject;
  75.  
  76.     si (objet_principal)
  77.     si (fenêtre = WindowOpen (objet_principal))
  78.         GetAttr (WINDOW_SigMask, objet_principal, signal);
  79.     renvoi fenêtre;
  80. }
  81.  
  82. vide main (vide)
  83. {   struct Window * fenêtre;
  84.     ULONG signal = 0, rc;    long groupe = 0;
  85.     BOOL continuer = 1;
  86.     char ligne[16*4], titre[32];
  87.     init_textes_gadgets (' ', ligne);
  88.     si (BGUIBase = OpenLibrary (BGUINAME, BGUIVERSION))
  89.     {    si (fenêtre = ouverture_fenêtre (&signal, ligne, groupe))
  90.     {   faire
  91.         {    Wait (signal);
  92.         tant_que ((rc = HandleEvent (objet_principal)) != WMHI_NOMORE)
  93.         {   selon (rc)
  94.             {    égal WMHI_CLOSEWINDOW:
  95.                 continuer = 0;    arrêt;
  96.             défaut:
  97.                 si (rc >=0  ET  rc <= 31)   /* un caractère a été cliqué */
  98.                 {    strcpy (titre, ligne+rc*2);
  99.                 strcat (titre, "  Hexa: ");
  100.                 stcl_h (titre+9, *(unsigned char *)(ligne+rc*2));
  101.                 strcat (titre, "  Décimal: ");
  102.                 stcl_d (titre+22, *(unsigned char *)(ligne+rc*2));
  103.                 SetWindowTitles (fenêtre, titre, (char *) -1);
  104.                 }
  105.                 sinon si (rc >= 100  ET  rc < 108)      /* gadget de page */
  106.                 {    groupe = rc - 100;
  107.                 init_textes_gadgets (' ' + groupe*32, ligne);
  108.                 RefreshGadgets (fenêtre->FirstGadget, fenêtre, 0);
  109.                 }
  110.                 arrêt;
  111.             }
  112.         }
  113.         }
  114.         tant_que (continuer);
  115.     }
  116.     si (objet_principal)
  117.         DisposeObject (objet_principal);
  118.     CloseLibrary (BGUIBase);
  119.     }
  120. }
  121.